home *** CD-ROM | disk | FTP | other *** search
- /* rexx macro */
-
- options results /* enable return codes */
-
- if (left(address(), 6) ~= "GOLDED") then /* not started by GoldEd ? */
-
- address 'GOLDED.1'
-
- 'LOCK CURRENT RELEASE=4' /* lock GUI, gain access */
-
- if (RC ~= 0) then
-
- exit
-
- options failat 6 /* ignore warnings */
-
- signal on syntax /* ensure clean exit */
-
- /* ------------------------- INSERT YOUR CODE HERE: -------------------- */
-
- /* INPUT: SOFTWARE/K (supported values: SAS/C,SAS/C-GNUMAKE,VBCC,DICE,DICE-GNUMAKE,STORMC,GENERIC) */
- /* COMMAND/K (supported values: HIDE SHOW TOP BOTTOM PREV NEXT SELECT */
-
- parse upper arg SOFTWARE COMMAND .
-
- if (SOFTWARE = "") then
-
- SOFTWARE = "GENERIC"
-
- 'QUERY CAT'
-
- if (RESULT = "deutsch") then do
-
- STRING.sSCMSGERROR = "Kann SAS/C-Message-Browser nicht starten !"
- STRING.sUNSUPPORTED = "This function is not supported|by the current C/C++ mode !"
- STRING.sUNKNOWN = "Unbekannter Fehler"
- end
- else do
-
- STRING.sSCMSGERROR = "Can not start the SAS/C message browser !"
- STRING.sUNSUPPORTED = "Diese Funktion wird von der aktuellen|C/C++-Umgebung nicht unterstützt !"
- STRING.sUNKNOWN = "Unknown error"
- end
-
- if ((SOFTWARE ~= "SAS/C") & (SOFTWARE ~= "SAS/C-GNUMAKE")) then do
-
- 'REQUEST PROBLEM="' || STRING.sUNSUPPORTED || '"'
- end
- else do
-
- 'QUERY PATH VAR=PATH'
-
- R = pragma('D', PATH)
-
- STATE.FILE = ""
- STATE.ERRTEXT = ""
- STATE.LINE = ""
- STATE.ERRNUM = ""
- STATE.ALTFILE = ""
- STATE.ALTLINE = ""
-
- if ((COMMAND = 'SELECT') | (COMMAND = 'NEXT') | (COMMAND = 'PREV') | (COMMAND = 'TOP') | (COMMAND = 'TOP')) THEN
- NAVIGATE = 1
- else
- NAVIGATE = 0
-
- /* communicate with browser */
-
- if ((SOFTWARE = "SAS/C") | (SOFTWARE = "SAS/C-GNUMAKE")) then do
-
- if (COMMAND = "show") then
-
- COMMAND = "show activate"
-
- if (~show('P', 'SC_SCMSG')) then
-
- call run_scmsg
-
- if (show('P', 'SC_SCMSG')) then do
-
- address 'SC_SCMSG'
-
- options failat 35
-
- if (NAVIGATE = 0) then do
-
- interpret COMMAND
-
- address
- end
- else do
-
- /* navigate to next error and get information on error */
-
- interpret COMMAND
-
- 'file'
-
- if (RESULT = "") then do
-
- address
- end
- else do
-
- STATE.FILE = RESULT
-
- 'text'
-
- STATE.ERRTEXT = RESULT
-
- 'number'
-
- STATE.ERRNUM = RESULT
-
- 'line'
-
- STATE.LINE = RESULT
-
- /* show error in editor */
-
- address
-
- call showstate
-
- end
- end
-
- options failat 6
- end
- end
- end
-
- /* ---------------------------- END OF YOUR CODE ----------------------- */
-
- 'UNLOCK' /* VERY important: unlock GUI */
- EXIT
-
- SYNTAX:
-
- SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
- 'UNLOCK'
- EXIT
-
- /* /// "run_scmsg" */
-
- run_scmsg: procedure EXPOSE STRING.
-
- /* update env variable to reflect path of current project */
-
- 'QUERY PATH VAR=PATH'
-
- 'EXPAND NAME="' || PATH || '" VAR=PATH'
-
- 'SET $sc/projdir "' || PATH || '"'
-
- /* show browser window ? */
-
- 'QUERY OPTIONBROWSER VAR=OPTIONBROWSER'
-
- /* direct SCMSG to show up on our screen */
-
- 'QUERY SCREEN VAR=PUBSCRNAME'
-
- if (show('P', 'SC_SCMSG')) then do
-
- if (OPTIONBROWSER = "TRUE") then
-
- address 'SC_SCMSG' 'opts screen ' || PUBSCRNAME
- end
- else do
-
- /* read and update SCMSG config file (update screen name and arexx port) */
-
- if (~exists("env:sc")) then
-
- 'FILE NEWDIR NAME="env:sc"'
-
- LINES = 0
-
- if open('SCMSG', 'env:sc/scmsg', 'READ') then do
-
- do until eof('SCMSG')
-
- DATA = readln('SCMSG')
-
- parse upper var DATA COMMAND .
-
- if ((COMMAND ~= "PORTNAME") & (COMMAND ~= "PUBSCREEN") & (COMMAND ~= "EDITCOMMAND") & (COMMAND ~= "GOTOFILE") & (COMMAND ~= "GOTOLINE")) then do
-
- LINES = LINES + 1
-
- CONFIG.LINES = DATA
- end
-
- end
-
- R = close('SCMSG')
-
- /* save updated config file (with current port/pubscreen name) */
-
- if open('SCMSG', 'env:sc/scmsg', 'WRITE') then do
-
- PORTNAME = ADDRESS()
-
- R = writeln('SCMSG', "PORTNAME " || PORTNAME )
-
- R = writeln('SCMSG', "PUBSCREEN " || PUBSCRNAME)
-
- R = writeln('SCMSG', "GOTOFILE WINDOW USE=%f FORCE")
-
- R = writeln('SCMSG', "GOTOLINE GOTO INDENT LINE=%l UNFOLD=TRUE")
-
- R = writeln('SCMSG', "EDITCOMMAND golded:ed")
-
- if (LINES ~= 0) then do
-
- do LINE=1 to (LINES - 1)
-
- R = writeln('SCMSG', CONFIG.LINE)
- end
- end
-
- R = close('SCMSG')
- end
- end
-
- /* run scmsg */
-
- if (exists("sc:c/scmsg")) then do
-
- COMMANDSTRING = 'sc:c/scmsg screen "' || PUBSCRNAME || '"'
-
- if (OPTIONBROWSER ~= "TRUE") then
-
- COMMANDSTRING = COMMANDSTRING || ' rexxonly'
-
- 'FIX VAR=COMMANDSTRING'
-
- 'RUN ASYNC CMD="' || COMMANDSTRING || '" WAITPORT="SC_SCMSG" SECONDS=10 DIR="' || PATH || '"'
- end
-
- if (~show('P', 'SC_SCMSG')) then do
-
- 'REQUEST PROBLEM="' || STRING.sSCMSGERROR || '"'
-
- 'UNLOCK'
-
- exit
- end
- end
-
- return
-
- /* /// */
- /* /// "showstate" */
-
- showstate: procedure expose STATE.
-
- /* show line and error (described by <state.>) in editor */
-
- if (STATE.FILE ~= "") then do
-
- 'WINDOW USE="' || STATE.FILE || '" FORCE'
-
- if (RC = 0) then do
-
- if (STATE.LINE ~= "") then do
-
- 'GOTO INDENT LINE=' || STATE.LINE || ' UNFOLD=TRUE'
- end
-
- if (STATE.ERRTEXT = "") then
-
- STATE.ERRTEXT = STRING.sUNKNOWN
-
- if (STATE.ERRNUM ~= "") then
-
- STATE.ERRTEXT = STATE.ERRNUM || ': ' || STATE.ERRTEXT
-
- 'FIX VAR=STATE.ERRTEXT'
-
- 'FIX VAR=STATE.ERRNUM'
-
- 'REQUEST STATUS="' || STATE.ERRTEXT || '"'
- end
- end
-
- return
-
- /* /// */
-